package com.xf.day07_graphx

import org.apache.spark.graphx.Graph
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD
/**
 *  使用 边源点 和 目的点 的元组集合RDD 构建图
 */
object NewGraphx3 {
  def main(args: Array[String]): Unit = {

    val conf = new SparkConf().setAppName("TestGraphx2").setMaster("local[*]")
    val sc = new SparkContext(conf)

    // 读取本地文件 edges.txt 创建 RDD
    val recordRDD :RDD[String]= sc.textFile("file:///D:\\workRecord\\spark_project20250924\\data\\edges.txt")

    //创建 边源点ID 和 目的点ID 二元组集合的RDD
    val EdgeTupleRDD :RDD[( Long, Long )] = recordRDD.map {
      x =>
        val fields = x.split(" ");
        (fields(0).toLong, fields(1).toLong)
    }

    //使用 EdgeTupleRDD 实例化 Graph 类建立一个 Graph 对象
    val graph_fromEdgeTuples : Graph[Long, Int] = Graph.fromEdgeTuples( EdgeTupleRDD, 168L)

    // 查看图的顶点信息
    /**
     * (2,168)
     * (3,168)
     * (7,168)
     * (5,168)
     */
   //  graph_fromEdgeTuples.vertices.collect().foreach( println)


    // 查看图的 边信息 , 边的属性值为 1
    /**
     * Edge(2,5,1)
     * Edge(3,7,1)
     * Edge(5,3,1)
     * Edge(5,7,1)
     */
    graph_fromEdgeTuples.edges.collect().foreach(println)

  }
}
